package cn.wjssl.domain.strategy.service;

import cn.wjssl.domain.strategy.model.valobj.RuleWeightVO;

import java.util.List;
import java.util.Map;

/**
 * 抽奖规则接口；提供对规则的业务功能查询
 */
public interface IRaffleRule {

    /**
     * 根据规则树ID集合查询奖品中加锁数量的配置「部分奖品需要抽奖N次解锁」
     *
     * @param treeIds 规则树ID值
     * @return key 规则树，value rule_lock 加锁值
     */
    Map<String, Integer> queryAwardRuleLockCount(String[] treeIds);

    /**
     * 通过activityId, 查询strategyId, 用策略Id, 查询strategy_rule表, 获得权重配置(rule_value)
     * 再通过权重配置, 查询strategy_award表, 查询奖品相关, 组装成权重奖品配置列表ruleWeightVOS'
     * 优先从redis中获取
     * @param activityId
     * @return
     */
    List<RuleWeightVO> queryAwardRuleWeightByActivityId(Long activityId);

    // 中转方法, 将activityId 转换为 strategyId 后使用
    List<RuleWeightVO> queryAwardRuleWeightByStrategyId(Long strategyId);
}
